﻿CREATE PROC Inv.spAplicaCupon
	@psCodigo	VARCHAR(14),
	@pnFechaVigencia INT,
	@psIpMod	VARCHAR(30)
AS
BEGIN
	SET NOCOUNT ON
	DECLARE @nIsValid BIT, @tFv DATE
	
	EXEC Inv.spValidaCodigo
		@psCodigo = @psCodigo, -- varchar(14)
	    @pnIsValid = @nIsValid OUTPUT -- bit
	
	IF @nIsValid = 0
	BEGIN
		SELECT 'Cupon no valido, codigo incorrecto.' AS Mensaje
		RETURN
	END
	
	SELECT @tFv = FechaVigencia FROM Inv.CuponRegistro WHERE CodigoCupon = @psCodigo
	IF @tFv >= CONVERT(DATE, GETDATE())
	BEGIN
		IF NOT EXISTS(SELECT 1 FROM Inv.CuponUtilizado WHERE CodigoCupon = @psCodigo)
		BEGIN
			INSERT INTO Inv.CuponUtilizado
			        ( CodigoCupon ,
			          FechaUso ,
			          IpMod ,
			          FechaUltMod
			        )
			VALUES  ( @psCodigo , -- CodigoCupon - varchar(14)
			          GETDATE() , -- FechaUso - datetime
			          @psIpMod , -- IpMod - varchar(15)
			          GETDATE()  -- FechaUltMod - datetime
			        )
			        
			SELECT 'Cupon valido, se a registrado exitosamente.' AS Mensaje
			RETURN
		END
		ELSE
		BEGIN
			SELECT 'Cupon no valido, este ya fue utilizado anteriormente.' AS Mensaje
			RETURN
		END
	END
	ELSE
	BEGIN
		SELECT 'La vigencia del cupon no es valida. Vigencia: ' + CAST(@tFv AS VARCHAR) AS Mensaje
		RETURN
	END
	
	SET NOCOUNT OFF
END